/* eslint-disable no-param-reassign */
import { getSearchResult } from '../../../services/good/fetchSearchResult';
import Toast from 'tdesign-miniprogram/toast/index';

const initFilters = {
	overall: 1,
	sorts: '',
};

Page({
	data: {
		goodsList: [],
		sorts: '',
		overall: 1,
		show: false,
		minVal: '',
		maxVal: '',
		minSalePriceFocus: false,
		maxSalePriceFocus: false,
		filter: initFilters,
		hasLoaded: false,
		keywords: '',
		loadMoreStatus: 0,
		loading: true,
	},

	total: 0,
	current: 1,
	size: 30,

	onLoad(options) {
		const { searchValue = '' } = options || {};
		this.setData(
			{
				keywords: searchValue,
			},
			() => {
				this.init(true);
			},
		);
	},

	generalQueryData(reset = false) {
		const { filter, keywords, minVal, maxVal } = this.data;
		const { current, size } = this;
		const { sorts, overall } = filter;
		const params = {
			sortBy: '', //  ''综合，price 价格
			page: {
				current: 1,
				size: 30,
			},
			keyWords: keywords,
		};

		if (sorts) {
			params.sortBy = 'price';
			params.sortType = sorts === 'desc' ? 'desc' : 'asc';
		}
		if (overall) {
			params.sortBy = '';
		} else {
			params.sortBy = 'price';
		}
		params.lowerPrice = minVal ? minVal : 0;
		params.highPrice = maxVal ? maxVal : undefined;
		if (reset) return params;
		return {
			...params,
			current: current + 1,
			size,
		};
	},

	async init(reset = true) {
		const { loadMoreStatus, goodsList = [] } = this.data;
		const params = this.generalQueryData(reset);
		if (loadMoreStatus !== 0) return;
		this.setData({
			loadMoreStatus: 1,
			loading: true,
		});
		try {
			const result = await getSearchResult(params);
			// console.log(result, "result");
			const code = 'Success';
			const data = result.data;
			// const data = result.data.records;
			if (code.toUpperCase() === 'SUCCESS') {
				const { records, total = 0 } = data;
				if (total === 0 && reset) {
					this.total = total;
					this.setData({
						emptyInfo: {
							tip: '抱歉，未找到相关商品',
						},
						hasLoaded: true,
						loadMoreStatus: 0,
						loading: false,
						goodsList: [],
					});
					return;
				}

				const _goodsList = reset ? records : goodsList.concat(records);
				const _loadMoreStatus = _goodsList.length === total ? 2 : 0;
				this.current = params.current || 1;
				this.total = total;
				this.setData({
					goodsList: _goodsList,
					loadMoreStatus: _loadMoreStatus,
				});
			} else {
				this.setData({
					loading: false,
				});
				wx.showToast({
					title: '查询失败，请稍候重试',
				});
			}
		} catch (error) {
			this.setData({
				loading: false,
			});
		}
		this.setData({
			hasLoaded: true,
			loading: false,
		});
	},

	handleCartTap() {
		wx.switchTab({
			url: '/pages/cart/index',
		});
	},

	handleSubmit() {
		this.setData(
			{
				goodsList: [],
				loadMoreStatus: 0,
			},
			() => {
				this.init(true);
			},
		);
	},

	onReachBottom() {
		const { goodsList } = this.data;
		const { total = 0 } = this;
		if (goodsList.length === total) {
			this.setData({
				loadMoreStatus: 2,
			});
			return;
		}
		this.init(false);
	},

	handleAddCart() {
		Toast({
			context: this,
			selector: '#t-toast',
			message: '点击加购',
		});
	},

	gotoGoodsDetail(e) {
		// const { index } = e.detail;
		// const { spuId } = this.data.goodsList[index];
		const goodsId = e.detail.goods.id
		wx.navigateTo({
			url: `/pages/goods/details/index?goodsId=${goodsId}`,
		});
	},

	handleFilterChange(e) {
		const { overall, sorts } = e.detail;
		const { total } = this;
		const _filter = {
			sorts,
			overall,
		};
		this.setData({
			filter: _filter,
			sorts,
			overall,
		});

		this.current = 1;
		this.setData(
			{
				goodsList: [],
				loadMoreStatus: 0,
			},
			() => {
				total && this.init(true);
			},
		);

	},

	showFilterPopup() {
		this.setData({
			show: true,
		});
	},

	showFilterPopupClose() {
		this.setData({
			show: false,
		});
	},

	onMinValAction(e) {
		const { value } = e.detail;
		this.setData({ minVal: value });
	},

	onMaxValAction(e) {
		const { value } = e.detail;
		this.setData({ maxVal: value });
	},

	reset() {
		this.setData({ minVal: '', maxVal: '' });
	},

	confirm() {
		const { minVal, maxVal } = this.data;
		let message = '';
		if (minVal && !maxVal) {
			message = `价格最小是${minVal}`;
		} else if (!minVal && maxVal) {
			message = `价格范围是0-${minVal}`;
		} else if (minVal && maxVal && minVal <= maxVal) {
			message = `价格范围${minVal}-${this.data.maxVal}`;
		} else {
			message = '请输入正确范围';
		}
		if (message) {
			Toast({
				context: this,
				selector: '#t-toast',
				message,
			});
		}
		this.setData({
			minVal,
			maxVal,
			show: false,
			loadMoreStatus: 0,
		})
		this.init()
		// this.current = 1;
		// this.setData(
		// 	{
		// 		show: false,
		// 		minVal: '',
		// 		goodsList: [],
		// 		loadMoreStatus: 0,
		// 		maxVal: '',
		// 	},
		// 	() => {
		// 		this.init();
		// 	},
		// );

	},
});
